package com.huaxi.ddgw.manager.utils;

import com.huaxi.ddgw.model.entity.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

//封装树形菜单
public class MenuHelper {

    //递归实现封装过程
    public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
        //sysMenuList所有菜单的集合
        //创建List集合封装最终数据
        List<SysMenu> trees = new ArrayList<>();
        //遍历所有菜单
        for (SysMenu sysMenu:sysMenuList) {
            //找到递归操作的入口 第一层菜单 parent_id=0
            if (sysMenu.getParentId().longValue() == 0) {
                //根据第一层 使用递归找下层
                //第一个参数是当前的菜单的第一层
                trees.add(findChildren(sysMenu, sysMenuList));
            }
        }
        return trees;
    }

    //递归查找下层菜单
    public static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
        sysMenu.setChildren(new ArrayList<>());
        //递归查找
        for (SysMenu it:sysMenuList) {
            if (sysMenu.getId().longValue() == it.getParentId().longValue()) {
                //it是下层数据
                sysMenu.getChildren().add(findChildren(it, sysMenuList));
            }
        }
        return sysMenu;
    }
}
